#ifndef CX_HAL_GPIO_H
#define CX_HAL_GPIO_H
#include "at32f415.h"
#include "cx_typedef.h"
typedef gpio_type * cx_hal_gpio_controller_t;
typedef uint16_t    cx_hal_gpio_pin_t;
typedef struct cx_hal_gpio_handle
{
    cx_hal_gpio_controller_t controller;
    cx_hal_gpio_pin_t        pin;
}cx_hal_gpio_handle_t;
typedef enum
{
    CX_HAL_GPIO_MODE_INPUT               = 0x00,
    CX_HAL_GPIO_MODE_INPUT_PULLUP        = 0x01,
    CX_HAL_GPIO_MODE_INPUT_PULLDOWN      = 0x02,
    CX_HAL_GPIO_MODE_OUTPUT_PUSH_PULL    = 0x10,
    CX_HAL_GPIO_MODE_OUTPUT_OPENDRAIN    = 0x11,
    CX_HAL_GPIO_MODE_OUTPUT_AF_PUSH_PULL = 0x12,
    CX_HAL_GPIO_MODE_OUTPUT_AF_OPENDRAIN = 0x13
}cx_hal_gpio_mode_t;

cx_err_t cx_hal_gpio_set_mode(cx_hal_gpio_handle_t* handle, cx_hal_gpio_mode_t mode);
cx_err_t cx_hal_gpio_write(cx_hal_gpio_handle_t *handle, cx_bit_status_t value);
cx_bit_status_t cx_hal_gpio_read(cx_hal_gpio_handle_t *handle);
#endif
